package org.thread.test04.sync.demo04;

/**
 * 第一个线程 - 有一把锁对象为：ONE_LOCK
 *
 * @author ZQX
 * @date 2025-03-13
 */
public class OneThread extends Thread {

    /**
     * 第一把锁
     */
    public static final Object ONE_LOCK = new Object();

    @Override
    public void run() {
        synchronized (ONE_LOCK) {
            System.out.printf("获取第一把锁 %s，执行相关的业务代码！%n", "ONE_LOCK");

            try {
                // 如果大概率不死锁，加以下的睡眠方法
                // 让另一个线程有机会获取另一把锁
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }

            synchronized (TwoThread.TWO_LOCK) {
                System.out.printf("获取第二把锁 %s，执行相关的业务代码！%n", "TWO_LOCK");
            }
        }
    }
}
